﻿namespace GameLib.Games
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Collections;

    /// <summary>
    /// A non-generic base interface for a collection of IModMatcher matches
    /// </summary>
    public interface IModMatchCollection
    {
    }

    /// <summary>
    /// A generic interface implementing IModMatcher which introduces a generic matcher type and IMod type
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <typeparam name="U"></typeparam>
    public interface IModMatchCollection<T> : IModMatchCollection
        where T : IMod
    {
        /// <summary>
        /// The matcher which this collection is based on
        /// </summary>
        IModMatcher ModMatcher
        {
            get;
        }

        /// <summary>
        /// The matches found by this matcher
        /// </summary>
        IModCollection<T> Matches
        {
            get;
        }

        /// <summary>
        /// The mod list this matcher matched against
        /// </summary>
        IModCollection<T> ModList
        {
            get;
        }
    }
}
